Accessing database data from volatile memory is significantly faster than accessing database data from disk. Given that volatile memory is becoming cheaper and larger, improvements to query processing are possible by improving the frequency of using volatile memory for fulfilling such queries rather than disk. Existing database systems maintain in-memory copies of data, as well as information that indicates which in-memory rows are invalid. If an in-memory row is marked as invalid, then at least one data item in the in-memory row is stale (i.e. does not reflect an update). When a database server needs to retrieve a data item from an in-memory row that has been marked as invalid, the database server must retrieve the data item from elsewhere (e.g. a buffer cache or disk) to ensure that the retrieved version of the data item reflects all updates. Unfortunately, this practice is inefficient when the in-memory copy of the desired data item is not in fact stale. However, with row-level invalidity, it is not possible to know which in-memory data items, within an invalid row, are not stale.
The approaches described in this section are approaches that could be pursued, but not necessarily approaches that have been previously conceived or pursued. Therefore, unless otherwise indicated, it should not be assumed that any of the approaches described in this section qualify as prior art merely by virtue of their inclusion in this section.